#include"mysql_util.h"
/// @brief mysql读操作
/// @param info mysql信息结构体
/// @param result_sql sql返回结果
/// @param len 返回结果大小
/// @return 成功或失败
bool mysql_read(mysql_info* info,char*result_sql,int len)
{
    MYSQL *mysql=mysql_init(NULL);
    MYSQL* ret=mysql_real_connect(mysql,info->host,info->account,info->passwd,info->database,0,NULL,0);
    if(ret==NULL)
    {
        fprintf(stderr,"error:%d\n",mysql_errno(mysql));
        return false;
    }
    int qret=mysql_query(mysql,info->sql_commad);
    if(qret!=0)
    {
        fprintf(stderr,"error:%d\n",mysql_errno(mysql));
        return false;
    }
    MYSQL_RES* res=mysql_store_result(mysql);
    if((mysql_num_rows(res))==0)
    return false;
    MYSQL_ROW row;
    bzero(result_sql,sizeof(len));
    while((row=mysql_fetch_row(res))!=NULL)
    {
        for(int i=0;i<mysql_num_fields(res);i++)
        {
            sprintf(result_sql,"%s&&%s",row[i]);
        }
    }
    removeSubStr(result_sql,"(null)");
    mysql_close(mysql);
    return true;
}
/// @brief mysql写操作
/// @param info sql信息结构体
/// @return 成功与否
bool mysql_write(mysql_info* info)
{
    MYSQL *mysql=mysql_init(NULL);
    MYSQL* ret=mysql_real_connect(mysql,info->host,info->account,info->passwd,info->database,0,NULL,0);
    if(ret==NULL)
    {
        fprintf(stderr,"error:%d\n",mysql_errno(mysql));
        return false;
    }
    int qret=mysql_query(mysql,info->sql_commad);
    if(qret!=0)
    {
        fprintf(stderr,"error:%d\n",mysql_errno(mysql));
        return false;
    }
    mysql_close(mysql);
    return true;
}
/// @brief 用户注册
/// @param info sql信息结构体
/// @param show_account 用户名
/// @param lock_passwd MD5加密的密文密码
/// @param rand_num 随机数盐
/// @param status 墓碑
/// @param user_path 用户当前工作路径
/// @return 成功与否
bool mysql_register(mysql_info* info,char* show_account,char* lock_passwd,int rand_num,int status,char* user_path)
{
    sprintf(info->sql_commad,"insert into account(show_account ,lock_passwd,rand_num,status,user_path)values('%s','%s',%d,%d,'%s')",show_account,lock_passwd,rand_num,status,user_path);
    return mysql_write(info);
}
/// @brief 字符串处理函数 处理掉读操作返回的"(null)"
/// @param str 读操作返回字符串
/// @param subStr (null)
void removeSubStr(char* str, const char* subStr)
{
   int len = strlen(subStr); // 计算子字符串的长度
   char* position = strstr(str, subStr); // 查找子字符串的位置
   if (position != NULL) { // 如果找到了子字符串
       char* start = position; // 定义复制起始位置
       char* end = start + len; // 定义复制结束位置
       while (*end != '\0') { // 循环复制
           *start = *end;
           start++;
           end++;
       }
       *start = '\0'; // 最后一个字符赋值为'\0'表示字符串结束
   }
}